// 普通数组移除指定元素
export function removeItem(arr: any[], item: any) {
  let targetIndex = arr.findIndex((itemTemp) => itemTemp === item);
  if (targetIndex !== -1) {
    arr.splice(targetIndex, 1);
  }
}
// 判断两个数组元素是否完全相同，适用于简易数组，元素为基本数据类型（字符串、数字）
export function isEqualArray_simple(arr1: any[], arr2: any[]) {
  if (arr1.length !== arr2.length) return false;
  return JSON.stringify([...arr1].sort()) === JSON.stringify([...arr2].sort());
}
/**
 * 按指定属性对对象数组进行分组
 * @param array 待分组的对象数组
 * @param key 分组依据的属性名
 * @param groupName_default 分组默认名称
 * @returns 分组结果对象，键为属性值，值为对应元素数组
 */
export function groupBy<T, K extends keyof T>(
  array: T[],
  key: K,
  groupName_default: string = "未命名分组"
): Record<string, T[]> {
  return array.reduce((result, item) => {
    const groupKey = String(item[key] || groupName_default);
    if (!result[groupKey]) {
      result[groupKey] = [];
    }
    result[groupKey].push(item);
    return result;
  }, {} as Record<string, T[]>);
}
